import http from './http.js';

/**
 * 更新旅游团状态
 * @param {Object} params - 请求参数
 * @param {number} params.id - 旅游团ID
 * @param {number} params.status - 新状态值
 * @param {string} params.openId - 小程序请求者的OpenId
 * @returns {Promise} - 返回更新结果
 */
export const updateTourGroupStatus = async (params = {}) => {
  try {
    const requestParams = {
      id: 0,
      status: 0,
      openId: 0,
      ...params
    };

    const res = await http.post('Mini/TourGroup/UpdateStatus', requestParams);
    return res;
  } catch (error) {
    console.error('更新旅游团状态失败:', error);
    throw error;
  }
};


/**
 * 绑定导游到旅游团
 * @param {Object} params - 请求参数
 * @param {number} params.tourGroupId - 旅游团ID
 * @param {number} params.guideId - 导游ID
 * @param {string} params.openId - 小程序请求者的OpenId
 * @returns {Promise} - 返回绑定结果
 */
export const bindGuideToTourGroup = async (params = {}) => {
  try {
    const requestParams = {
      tourGroupId: 0,
      guideId: 0,
      openId: 0,
      ...params
    };

    const res = await http.post('Mini/GuideTourGroupBind/BindGuide', requestParams);
    return res;
  } catch (error) {
    console.error('绑定导游到旅游团失败:', error);
    throw error;
  }
};

/**
 * 解绑导游
 * @param {Object} params - 请求参数
 * @param {number} params.TourGroupId - 旅游团ID
 * @param {string} params.openId - 小程序请求者的OpenId
 * @returns {Promise} - 返回解绑结果
 */
export const unbindGuideFromTourGroup = async (params = {}) => {
  try {
    const requestParams = { 
      openId: '',
      ...params
    };

    const res = await http.post('Mini/GuideTourGroupBind/UnbindGuide', requestParams);
    return res;
  } catch (error) {
    console.error('解绑导游失败:', error);
    throw error;
  }
};

/**
 * 绑定车辆到旅游团
 * @param {Object} params - 请求参数
 * @param {number} params.tourGroupId - 旅游团ID
 * @param {number} params.vehicleId - 车辆ID
 * @param {string} params.openId - 小程序请求者的OpenId
 * @returns {Promise} - 返回绑定结果
 */
export const bindVehicleToTourGroup = async (params = {}) => {
  try {
    const requestParams = {
      tourGroupId: 0,
      vehicleId: 0,
      openId: 0,
      ...params
    };

    const res = await http.post('Mini/VehicleTourGroupBind/BindVehicle', requestParams);
    return res;
  } catch (error) {
    console.error('绑定车辆到旅游团失败:', error);
    throw error;
  }
};


/**
 * 获取旅游团列表
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {string|null} params.companyId - 公司Id（可选）
 * @param {string} params.groupName - 团名（模糊匹配）
 * @param {number|null} params.status - 状态（可选）
 * @param {string|null} params.guideId - 导游ID
 * @param {string|null} params.vehicleId - 车辆ID
 * @param {number} params.pageNum - 当前页码
 * @param {number} params.pageSize - 每页显示条数
 * @returns {Promise} - 返回查询结果
 */
export const getTourGroupList = async (params = {}) => {
	try {
		// 参数处理，确保必填字段存在默认值
		const requestParams = {
			openId: null,
			companyId: null,
			groupName: null,
			status: null,
			guideId: null,
			vehicleId: null,
			pageNum: 1, // 默认第一页
			pageSize: 10, // 默认每页10条
			...params
		};

		const res = await http.post('Mini/TourGroup/GetList', requestParams);
		return res;
	} catch (error) {
		console.error('获取旅游团列表失败:', error);
		throw error;
	}
};

/**
 * 获取旅游团详情
 * @param {Object} params - 请求参数
 * @param {number} params.id - 主键Id
 * @param {string} params.openId - 小程序请求者的OpenId（用于权限/数据隔离）
 * @returns {Promise} - 返回查询结果
 */
export const getTourGroupDetail = async (params = {}) => {
	try {
		// 参数处理，确保必填字段存在
		const requestParams = {
			id: 0,
			openId: '',
			...params
		};

		const res = await http.post('Mini/TourGroup/GetById', requestParams);
		return res;
	} catch (error) {
		console.error('获取旅游团详情失败:', error);
		throw error;
	}
};

/**
 * 根据日期范围获取旅游团
 * @param {Object} params - 请求参数
 * @param {string|null} params.startDate - 开始日期
 * @param {string} params.openId - 小程序请求者的OpenId
 * @returns {Promise} - 返回查询结果
 */
export const getTourGroupByDateRange = async (params = {}) => {
  try {
    const requestParams = {
      startDate: null,
      openId: '',
      ...params
    };

    const res = await http.post('Mini/TourGroup/GetByDateRange', requestParams);
    return res;
  } catch (error) {
    console.error('根据日期范围获取旅游团失败:', error);
    throw error;
  }
};

/**
 * 获取日期分组状态
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId
 * @returns {Promise} - 返回查询结果
 */
export const getDateGroupStatus = async (params = {}) => {
  try {
    const requestParams = {
      openId: '',
      ...params
    };

    const res = await http.post('Mini/TourGroup/GetDateGroupStatus', requestParams);
    return res;
  } catch (error) {
    console.error('获取日期分组状态失败:', error);
    throw error;
  }
};

/**
 * 删除旅游团
 * @param {Object} params - 请求参数
 * @param {number} params.id - 旅游团ID
 * @returns {Promise} - 返回删除结果
 */
export const deleteTourGroupById = async (params = {}) => {
  try {
    const requestParams = {
      id: 0,
      ...params
    };

    const res = await http.post('Mini/TourGroup/DeleteById', requestParams);
    return res;
  } catch (error) {
    console.error('删除旅游团失败:', error);
    throw error;
  }
};

 